package org.example.tools;

import org.apache.flink.connector.datagen.table.DataGenConnectorOptions;
import org.apache.flink.table.api.*;

/**
 * Flink Table API 测试类
 * 这个类演示了如何使用 Flink Table API 创建一个简单的批处理作业
 * 创建一个使用 datagen 连接器的表，并执行简单查询
 */
public class FlinkTableEnvTest {
    public static void main(String[] args) {
        // 创建批处理模式的环境设置
        final EnvironmentSettings settings = EnvironmentSettings.inBatchMode();
        // 使用环境设置创建 TableEnvironment
        final TableEnvironment tableEnv = TableEnvironment.create(settings);

        // 创建一个名为 t_test_gen 的表
        // 使用 datagen 连接器生成测试数据
        tableEnv.createTable("t_test_gen", TableDescriptor.forConnector("datagen")
                        .schema(Schema.newBuilder()
                                // 定义表结构：只有一个名为 f0 的字符串列
                                .column("f0", DataTypes.STRING())
                                .build())
                // 设置生成的数据行数为 10
                .option(DataGenConnectorOptions.NUMBER_OF_ROWS, 10L)
                .build());

        // 执行 SQL 查询并打印结果
        // 这里简单地查询表中的所有数据
        tableEnv.executeSql("select * from t_test_gen").print();
        // 注意：由于是批处理模式，这里不需要调用 env.execute()
    }
}
